<!DOCTYPE html>
<html lang=zh-CN>
<head>
<meta charset=utf-8>
<title>建立与配置 Apache WEB 服务器 | Cweili Beta</title>
<meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no">
<meta name=description content="Apache 服务器
开放源代码的 Apache 服务器拥有牢靠可信的美誉，所以从 1995 年 1 月以来，Apache 一直是 Internet 上最流行的 Web 服务器。
Apache 的优点：首先，Apache 能运行在 UNIX、Linux 和 Windows 等多种操作系统平台之上。其次，Apache 借助开放源代码开发模式的优势，得到全世界许多程序员的支持，程序员们为 Apac">
<meta property=og:type content=article>
<meta property=og:title content="建立与配置 Apache WEB 服务器">
<meta property=og:url content="http://cweili.gitcafe.com/build-apache-web-server/">
<meta property=og:site_name content="Cweili Beta">
<meta property=og:description content="Apache 服务器
开放源代码的 Apache 服务器拥有牢靠可信的美誉，所以从 1995 年 1 月以来，Apache 一直是 Internet 上最流行的 Web 服务器。
Apache 的优点：首先，Apache 能运行在 UNIX、Linux 和 Windows 等多种操作系统平台之上。其次，Apache 借助开放源代码开发模式的优势，得到全世界许多程序员的支持，程序员们为 Apac">
<meta name=twitter:card content=summary>
<meta name=twitter:title content="建立与配置 Apache WEB 服务器">
<meta name=twitter:description content="Apache 服务器
开放源代码的 Apache 服务器拥有牢靠可信的美誉，所以从 1995 年 1 月以来，Apache 一直是 Internet 上最流行的 Web 服务器。
Apache 的优点：首先，Apache 能运行在 UNIX、Linux 和 Windows 等多种操作系统平台之上。其次，Apache 借助开放源代码开发模式的优势，得到全世界许多程序员的支持，程序员们为 Apac">
<link rel=alternative href=/atom.xml title="Cweili Beta" type=application/atom+xml>
<link rel=icon href=favicon.png>
<link rel=stylesheet href=//libs.baidu.com/bootstrap/3.2.0/css/bootstrap.min.css type=text/css>
<link rel=stylesheet href=../css/style.css type=text/css>
<!--[if lt IE 9]><script src="//cdn.staticfile.org/html5shiv/3.7/html5shiv.min.js" type="text/javascript"></script><![endif]-->
</head>
<body>
<div id=container>
<nav id=mobile-nav class=visible-xs>
<a href="/" class=mobile-nav-link>首页</a>
<ul class=category-list><li class=category-list-item><a class=category-list-link href=../category/学习笔记>学习笔记</a><span class=category-list-count>40</span></li><li class=category-list-item><a class=category-list-link href=../category/小生活>小生活</a><span class=category-list-count>27</span></li><li class=category-list-item><a class=category-list-link href=../category/杂物>杂物</a><span class=category-list-count>9</span></li></ul>
<a href="/tag/%E7%9B%B8%E5%86%8C/" class=mobile-nav-link>相册</a>
<a href="/about/" class=mobile-nav-link>关于</a>
<div class=clearfix></div>
</nav>
<div id=wrap>
<!--[if lt IE 9]><p class="browsehappy alert alert-danger">您正在使用一个<strong>过时</strong>的浏览器。请<a href="http://browsehappy.com/" target="_blank">更新您的浏览器</a>来达到更好的体验。</p><![endif]-->
<header id=header>
<div id=banner></div>
<div id=header-outer class=outer>
<div id=header-inner class=inner>
<nav class=main-nav>
<div id=main-nav-toggle class="nav-icon visible-xs"><i class="fa fa-bars"></i></div>
<a class="main-nav-link hidden-xs" href="/">首页</a>
</nav>
<nav id=category-nav class=hidden-xs>
<ul class=category-list><li class=category-list-item><a class=category-list-link href=../category/学习笔记>学习笔记</a><span class=category-list-count>40</span></li><li class=category-list-item><a class=category-list-link href=../category/小生活>小生活</a><span class=category-list-count>27</span></li><li class=category-list-item><a class=category-list-link href=../category/杂物>杂物</a><span class=category-list-count>9</span></li></ul>
</nav>
<nav class="main-nav hidden-xs">
<a class=main-nav-link href="/tag/%E7%9B%B8%E5%86%8C/">相册</a>
<a class=main-nav-link href="/about/">关于</a>
</nav>
<nav id=sub-nav>
<a id=nav-rss-link class="nav-icon pull-right hidden-xs" href=/atom.xml title="RSS 订阅"><i class="fa fa-rss"></i></a>
<div id=nav-search-btn class="nav-icon pull-right" title=搜索><i class="fa fa-search"></i></div>
</nav>
<div id=search-form-wrap>
<form action=http://www.baidu.com/baidu accept-charset=utf-8 class=search-form target=_blank>
<input type=search name=word class=search-form-input placeholder=搜索>
<input id=search-form-submit type=submit value=&nbsp; class=search-form-submit>
<input name=tn type=hidden value=bds>
<input name=cl type=hidden value=3>
<input name=ct type=hidden value=2097152>
<input type=hidden name=si value=cweili.gitcafe.com>
<label class=search-form-submit for=search-form-submit><i class="fa fa-search"></i></label>
</form>
</div>
</div>
<div id=header-title class=inner>
<h1 id=logo-wrap>
<a href="/" id=logo>Cweili Beta</a>
</h1>
<h2 id=subtitle-wrap>
<a href="/" id=subtitle>I&#39;m working on it</a>
</h2>
</div>
</div>
</header>
<div class=outer>
<section id=main class=col-sm-9><article id=post-build-apache-web-server class="article article-type-post" itemscope itemprop=blogPost>
<div class=article-meta>
<a href="/build-apache-web-server/" class=article-date>
<time datetime=2011-11-20T03:47:46.000Z itemprop=datePublished>2011-11-20</time>
</a>
<div class=article-category>
<a class=article-category-link href=../category/学习笔记>学习笔记</a>
</div>
</div>
<div class="article-inner jiathis_streak">
<header class=article-header>
<h2 class=article-title itemprop=name>
建立与配置 Apache WEB 服务器
</h2>
</header>
<div class=article-entry itemprop=articleBody>
<ol>
<li><h3 id="Apache 服务器">Apache 服务器</h3>
开放源代码的 Apache 服务器拥有牢靠可信的美誉，所以从 1995 年 1 月以来，Apache 一直是 Internet 上最流行的 Web 服务器。</li>
</ol>
<p>Apache 的优点：首先，Apache 能运行在 UNIX、Linux 和 Windows 等多种操作系统平台之上。其次，Apache 借助开放源代码开发模式的优势，得到全世界许多程序员的支持，程序员们为 Apache 编写了能完成许多有用功能的模块，借助这些功能模块，Apache 具有无限扩展功能的优点。同时，Apache 的工作性能和稳定性远远领先于其他同类产品。<a id=more></a></p>
<p>目前几乎所有的 Linux 发行版都捆绑了 Apache，Red Hat Enterprise Linux 5.0 版本也不例外，默认情况下 Red Hat Enterprise Linux 安装程序会将 Apache 安装在系统上。</p>
<p>由于目前 Apache 被重新命名为 httpd，因此可使用下面命令检查系统是否已经安装了 Apache 或查看已经安装的版本。</p>
<ol>
<li><h3 id="测试 Apache 服务器">测试 Apache 服务器</h3>
在 Linux 服务器上执行“/etc/init.d/httpd start”命令，确认 Web 服务已经启动后，在客户端（可以是另一个工作站）使用的 Web 浏览器中输入 Linux 服务器的 IP 地址或域名进行访问。如果出现 Apache 的测试页面，则表示 Web 服务安装正确并且运行正常。</li>
</ol>
<p>从这个章节开始，启用实例 3.8.2 创建的域名服务器，并依据实例 3.8.2 预设置的网络环境的 IP 地址规划，分别建立相应的基于 Linux 的网络服务器。因此，本章节中，Web 服务器的 IP 地址是 192.168.1.251, 域名是 www.teach.com。</p>
<ol>
<li><h3 id="Web 服务的配置文件">Web 服务的配置文件</h3>
<p>配置 Apache 服务器的运行参数，是通过编辑 Apache 的主配置文件 httpd.conf 来实现的。该文件的位置随着安装方式的不同而不同，如果使用 RPM 的方式安装，该文件通常存放在 /etc/httpd/conf 目录下；如果使用编译源代码的方式安装，该文件通常存放在 Apache 安装目录的 conf 子目录下。由于 httpd.conf 是一个文本文件，因此可以使用任何文本编辑器 (如 vi) 对其进行编辑。</p>
</li>
<li><h3 id="httpd-conf 文件的格式">httpd.conf 文件的格式</h3>
<p>httpd.conf 配置文件主要由全局环境 (Section 1：Global Environment)、主服务器配置(Section 2：‘Main’server configuration) 和虚拟主机(Section 3：Virtual Hosts)3 个部分组成。每部分都有相应的配置语句，该文件所有配置语句的语法为“配置参数名称 参数值”的形式，配置语句可以放在文件中的任何地方，但为了增强文件的可读性，最好将配置语句放在相应的部分。</p>
</li>
</ol>
<p>httpd.conf 中每行包含一条语句，行末使用反斜杠“\”可以续行，但是反斜杠与下一行中间不能有任何其他字符(包括空白)。httpd.conf 的配置语句除了选项的参数值以外，所有选项指令均不区分大小写，可以在每一行前用“#”号表示注释。</p>
<p>在默认的 httpd.conf 文件中，每个配置语句和参数都有详细的解释，建议先使用 Apache 默认的 httpd.conf 文件作为模板进行修改设置，而且在修改之前先作好备份，以便做了错误的修改后还原。</p>
<ol>
<li><h3 id="Web 服务的基本配置">Web 服务的基本配置</h3>
现在通过一个实例，说明 Web 服务器的建立过程。</li>
</ol>
<p>[实例 3.9.1]建立一个 Web 服务器，能够正确提供基本中文网页服务。</p>
<ol>
<li><h4 id=设置主目录的路径>设置主目录的路径</h4>
<p>观察 Apache 服务器主配置文件 httpd.conf 内容，可以看到 Apache 服务器主目录的默认路径位于“/var/www/html”，可以将需要发布的网页放在这个目录下。不过如果需要，也可以将主目录的路径修改为其他目录，以方便管理和使用。如将 Apache 服务器主目录路径设为“/home/username/www”, 则修改主配置文件 httpd.conf 中的语句：DocumentRoot”/var/www/html”更改为：DocumentRoot”/home/username/www”。</p>
</li>
<li><h4 id=设置默认文档>设置默认文档</h4>
<p>默认文档是指在 Web 浏览器中键入 Web 站点的 IP 地址或域名即显示出来的 Web 页面(即在 URL 中没有指定要访问的页面)，也就是通常所说的主页。在缺省的情况下，Apache 的默认文档名为 index.html，默认文档名由 Directorylndex 语句进行定义，默认的语句是：DirectoryIndexindex.htmlindex.html.var，因此采用默认方式时，主页文档命名应为 index.html。也可以将 Directorylndex 语句中的默认文档名修改为其他文件。例如，添加 index.htm 和 index.php 文件作为默认文档：DirectoryIndexindex.htmlindex.htmindex.phpindex.html.var，这样服务器将依次判断使用不同的文件名：index.htmlindex.htmindex.phpindex.html.var。</p>
</li>
<li><h4 id="设置 Apache 监听的 IP 地址和端口号">设置 Apache 监听的 IP 地址和端口号</h4>
<p>Apache 默认会在本机所有可用 IP 地址上的 TCP80 端口监听客户端的请求。但需要使用多个 Listen 语句，以便在多个地址和端口上监听请求。默认的语句是：Listen 80</p>
</li>
</ol>
<p>假定要设置服务器监听 IP 地址为：172.16.1.100 的 80 端口和 172.16.2.100 的 8080 端口请求，需要添加语句：</p>
<p>Listen 172.16.1.100:80</p>
<p>Listen 172.16.2.100:8080</p>
<ol>
<li><h4 id=设置相对根目录的路径>设置相对根目录的路径</h4>
<p>相对根目录，通常是 Apache 存放配置文件和日志文件的地方。在默认的情况下，相对根目录是 /etc/httpd。配置文件中的语句是：ServerRoot”/etc/httpd”。</p>
</li>
<li><h4 id=设置日志文件>设置日志文件</h4>
<p>通过日志文件可以监控 Apache 的运行情况、出错原因和安全等问题。</p>
</li>
</ol>
<ul>
<li>错误日志 <br> 错误日志记录了 Apache 在启动或运行时发生的错误，所以当 Apache 出错时，应该先检查这个日志。通常错误日志的文件名为 error_log，错误日志存放的位置和文件名可以通过 ErrorLog 参数设置。默认的语句是：ErrorLoglogs/error_log。</li>
</ul>
<p>这里需要提醒的是，如果日志文件存放的路径不是以“/”开头，则意味着该路径是相对于 ServerRoot 目录的相对路径。</p>
<ul>
<li>访问日志 <br> 访问日志记录了客户端所有的访问信息，通过分析访问日志可以知道客户机什么时间访问了网站的什么文件等信息。通常访问日志的文件名为 access_log，访问日志存放的位置和文件名可以通过 CustomLog 参数设置。默认的语句是：CustomLoglogs/access_logcombined。</li>
</ul>
<p>上面语句最后的 combined 指明日志使用的格式，在这个位置可以使用 common 或 combined。common 是指使用 Web 服务器普遍采用的“普通标准”格式(Common Log Format)，这种格式可以被许多日志分析程序所识别。combined 是指使用“组合记录”格式(Combined Log Format)，其实 combined 与 common 格式基本相同，只是多了“引用页”和“浏览器识别”信息而已。common 和 combined 格式由 LogFormat 语句进行定义。</p>
<ol>
<li><h4 id="设置网络管理员的 E-mail 地址">设置网络管理员的 E-mail 地址</h4>
<p>当客户端访问服务器发生错误时，服务器通常会向客户端返回错误提示网页，为了方便解决错误，在这个网页中通常包含有管理员的 E-mail 地址。可以使用 ServerAdmin 语句来设置管理员的 E-mail 地址。例如 ServerAdmincheneychen@teach.com。</p>
</li>
<li><h4 id=设置服务器主机名称>设置服务器主机名称</h4>
<p>为了方便 Apache 识别服务器自身的信息，可以使用 ServerName 语句来设置服务器的主机名称。在 ServerName 语句中，如果服务器有域名，则填入服务器的域名；如果没有域名，则填入服务器的 IP 地址。例如：ServerNamewww.teach.com。</p>
</li>
<li><h4 id=设置默认字符集>设置默认字符集</h4>
<p>AddDefaultCharset 选项定义了服务器返回给客户机的默认字符集。由于西欧 (UTF-8) 是 Apache 的默认字符集，因此当客户端访问服务器的中文网页时会出现乱码的现象，如图图 3.9.2 所示。</p>
</li>
</ol>
<p>解决的办法是将语句“AddDefaultCharset UTF-8”改为“AddDefaultCharset GB2312”，然后重新启动 Apache 服务</p>
<p>从主目录以外的其他目录中发布信息，就必须创建虚拟目录。虚拟目录是一个位于 Apache 的主目录外的目录，它不包含在 Apache 的主目录中，但对于访问 Web 站点的用户而言，其与位于主目录中的子目录是一样的。</p>
<p>每个虚拟目录都有个别名，用户在 Web 浏览器中可以通过此别名来访问虚拟目录，如<a href="http:// 服务器域名 / 别名 / 文件名或 http:// 服务器 IP 地址 / 别名 / 文件名，就可以访问虚拟目录下的任何文件了。" target=_blank rel=external>http:// 服务器域名 / 别名 / 文件名或 http:// 服务器 IP 地址 / 别名 / 文件名，就可以访问虚拟目录下的任何文件了。</a></p>
<p>使用虚拟目录，不仅便于访问，灵活加大磁盘空间，更便于移动站点中的目录。只要别名不变，更改了虚拟目录的实际存放位置，无需更改目录的 URL，不会影响用户的访问。同时，使用虚拟目录，安全性好，通过给每个虚拟目录设置不同的访问权限，非常适合于不同用户对不同目录拥有不同权限的要求。</p>
<p>在主配置文件中，Apache 默认已经创建了两个虚拟目录：</p>
<p>Alias/icons/“/var/www/icons/“ /icons/ 对应的物理路径是 /var/www/icons/</p>
<p>Alias/error/“/var/www/error/“ /error/ 对应的物理路径是 /var/www/error/</p>
<p>使用 Alias 选项可以创建虚拟目录，例如创建名为 /down 的虚拟目录，它对应的物理路径是“/software/download”的语句是 Alias/down/“/software/download/“。</p>
<p>可以使用 &lt;Directory 目录路径 &gt; 和 &lt;/Directory&gt; 这对语句为主目录或虚拟目录设置权限。这是一对容器语句，必须成对出现，它们之间封装的是具体的设置目录权限语句，这些语句仅对被设置目录及其子目录起作用。下面是主配置文件中设置目录权限的例子。如果用户需要深入地设置目录权限，必须对设置目录特性选项进行调整。</p>
<p>&lt;Directory “/var/www/html”&gt;</p>
<p>Options Indexes FollowSymLinks</p>
<p>AllowOverride None</p>
<p>Order allow,deny</p>
<p>Allow from all</p>
<p>&lt;/Directory&gt;</p>
<p>用户认证是网络安全中非常重要的技术，是保护网络系统资源的第一道防线。用户认证的目标是仅让合法用户以合法的权限访问网络系统资源。</p>
<p>Apache 的用户认证，能够实现当用户第一次访问了启用用户认证目录下的任何文件时，浏览器会显示一个对话框，要求输入正确的登录用户名和口令进行用户身份的确认。如果是合法用户，，此后访问该目录的每个文件时，浏览器会自动送出用户名和密码，不需再次输入了，直到关闭浏览器为止。下面通过一个实际的例子说明在 Apache 中启用用户认证功能的方法。</p>
<p>[例 3.9.2]假设有一个名为 teachsource 的虚拟目录，对应的物理路径是 /usr/local/teachsource，现需要对其启用用户认证功能，只允许用户名为 teacher 和 student 的用户访问。</p>
<ol>
<li><h4 id=建立口令文件>建立口令文件</h4>
要实现用户认证，首先要建立保存用户名和口令的文件。使用 Apache 自带的 htpasswd 命令建立和更新存储用户名和密码的文本文件。这个文件应存放在不能被网络访问的位置，以免被下载。本例将口令文件放在 /etc/httpd/ 目录下，文件名为 mysecretpwd。使用以下的命令建立口令文件。</li>
</ol>
<p>命令语句中 -c 选项表示无论口令文件是否已经存在，都会重新写入文件并删除原有内容。所有添加第 2 个用户到口令文件时，就不应该使用了。</p>
<ol>
<li><h4 id=建立虚拟目录并配置用户认证>建立虚拟目录并配置用户认证</h4>
<p>在 Apache 的主配置文件 httpd.conf 中加入以下语句建立虚拟目录并配置用户认证。</p>
</li>
<li><h4 id=测试用户认证>测试用户认证</h4>
<p>首先在服务器中必须创建相应的虚拟目录“/usr/local/teachsource”, 并在目录中放置要访问的网页，如 index.html；使用命令“/etc/init.d/httpd restart”重新启动 Web 服务。</p>
</li>
</ol>
<p>在客户端的 Web 浏览器中访问这个虚拟目录，这时浏览器会弹出对话框，要求输入用户名和口令。</p>
<p>输入正确的用户名和口令，就可访问目录了。</p>
<p>如果用户名和口令不正确，则出现错误提示信息。</p>
<ol>
<li><h3 id=为何使用虚拟主机>为何使用虚拟主机</h3>
虚拟主机的出现源于网站的迅猛发展，“每站一机”的传统方式无法满足需求时，虚拟主机技术就应运而生了。利用虚拟主机技术，可以把一台真正的主机分成许多“虚拟”的主机，从而实现多用户对硬件资源、网络资源共享，大幅度降低了用户的建站成本。</li>
</ol>
<p>每一台虚拟主机都具有独立的域名或 IP 地址，具有完整的 wleb 服务器功能。虚拟主机各用户之间是完全独立的，从外界来看，虚拟主机和独立主机的表现是完全一样的。</p>
<ol>
<li><h3 id="基于 IP 地址的虚拟主机的配置">基于 IP 地址的虚拟主机的配置</h3>
基于 IP 地址的虚拟主机是在服务器里绑定多个 IP，然后配置 Apache 服务的主配置文件，把多个网站绑定在不同的 IP 上，访问服务器上不同的 IP，就看到不同的网站。</li>
</ol>
<p>[例 3.9.3]假设服务器有 192.168.1.249 和 192.168.1.248 两个 IP 地址，现需使用这两个 IP 地址分别创建两台虚拟主机，每台虚拟主机都对应不同的主目录。</p>
<ol>
<li><h4 id="服务器网卡配置子接口 IP">服务器网卡配置子接口 IP</h4>
如果服务器只有一张网卡，可以配置子接口 IP 地址。方法如下：</li>
</ol>
<p>创建或修改 /etc/sysconfig/network-scripts/ifcfg-eth0:1 文件的内容如下：</p>
<p>DEVICE=eth0:1</p>
<p>BOOTPROTO=none</p>
<p>ONBOOT=yes</p>
<p>HWADDR=00:0c:29:79:89:1c</p>
<p>TYPE=Ethernet</p>
<p>NETMASK=255.255.255.0</p>
<p>IPADDR=192.168.1.249</p>
<p>这样重新启动系统后就添加了一个子接口 IP 地址：192.168.1.249。采用同样的方法，创建或修改 /etc/sysconfig/network-scripts/ifcfg-eth0:2 文件，也可添加另一个子接口 IP 地址：192.168.1.248。</p>
<p>重启后，使用 ifconfig 命令验证结果如下：</p>
<p>[root@www network-scripts]# ifconfig</p>
<p>eth0 Link encap:Ethernet HWaddr 00:0C:29:79:89:1C</p>
<p>inet addr:192.168.1.251 Bcast:192.168.1.255 Mask:255.255.255.0</p>
<p>inet6 addr: fe80::20c:29ff:fe79:891c/64 Scope:Link</p>
<p>UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1</p>
<p>RX packets:375 errors:0 dropped:0 overruns:0 frame:0</p>
<p>TX packets:326 errors:0 dropped:0 overruns:0 carrier:0</p>
<p>collisions:0 txqueuelen:1000</p>
<p>RX bytes:35863 (35.0 KiB) TX bytes:39547 (38.6 KiB)</p>
<p>Interrupt:177 Base address:0x2000</p>
<p>eth0:1 Link encap:Ethernet HWaddr 00:0C:29:79:89:1C</p>
<p>inet addr:192.168.1.249 Bcast:192.168.1.255 Mask:255.255.255.0</p>
<p>UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1</p>
<p>Interrupt:177 Base address:0x2000</p>
<p>eth0:2 Link encap:Ethernet HWaddr 00:0C:29:79:89:1C</p>
<p>inet addr:192.168.1.248 Bcast:192.168.1.255 Mask:255.255.255.0</p>
<p>UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1</p>
<p>Interrupt:177 Base address:0x2000</p>
<p>lo Link encap:Local Loopback</p>
<p>inet addr:127.0.0.1 Mask:255.0.0.0</p>
<p>inet6 addr: ::1/128 Scope:Host</p>
<p>UP LOOPBACK RUNNING MTU:16436 Metric:1</p>
<p>RX packets:8 errors:0 dropped:0 overruns:0 frame:0</p>
<p>TX packets:8 errors:0 dropped:0 overruns:0 carrier:0</p>
<p>collisions:0 txqueuelen:0</p>
<p>RX bytes:560 (560.0 b) TX bytes:560 (560.0 b)</p>
<p>[root@www network-scripts]#</p>
<ol>
<li><h4 id="在主配置文件 httpd-conf 中添加以下语句实现基于 IP 地址的虚拟主机的配置">在主配置文件 httpd.conf 中添加以下语句实现基于 IP 地址的虚拟主机的配置</h4>
<p>创建虚拟主机需要在 Apache 的主配置文件 httpd.conf 中使用 &lt;VirtualHost&gt; 和 &lt;/VirtualHost&gt; 这对语句进行设置，这对语句必须成对出现，它们之间封装了设置虚拟主机属性的语句。例子中的语句 &lt;VirtualHost 虚拟主机的 IP&gt; 是指明这台虚拟主机使用哪个 IP 地址。如果虚拟主机需要独立的日志文件，应保证日志文件的路径存在，否则 Apache 将不能启动。因此，要在 /etc/httpd/logs 目录下创建 web1 和 web2 目录。</p>
</li>
<li><h4 id=基于域名的虚拟主机的配置>基于域名的虚拟主机的配置</h4>
<p>基于域名的虚拟主机只需服务器有一个 IP 地址即可创建多台虚拟主机，所有的虚拟主机共享同一个 IP 地址，各虚拟主机之间通过域名进行区分。因为 HTTP 协议访问请求里包含 DNS 域名信息，所以当 Web 服务器收到访问请求时，就可以根据不同的 DNS 域名来访问不同的网站。它的优势就是不需要更多的 IP 地址，容易配置。</p>
</li>
</ol>
<p>[例 3.9.4]假设服务器的 IP 地址为 192.168.1.251，在 DNS 服务器中有 class1.teach.com 和 class2.teach.com 主机地址 A 资源记录映射到该 IP 地址，现需使用这两个域名分别创建两台虚拟主机，每台虚拟主机都对应不同的主目录。</p>
<ol>
<li><p>实现方式是在主配置文件 httpd.conf 中添加以下语句：<br>必须注意，应该将服务器主配置文档中的主目录路径的配置语句：DocumentRoot”/var/www/html”先进行注释。</p>
</li>
<li><p>在同网段的工作站上测试验证 <br> 创建基于域名的虚拟主机时，必须先用 NamevirtualHost 指令指定哪个 IP 地址负责响应对虚拟主机的请求，然后 &lt;ⅥnualH0st 虚拟主机的域名 &gt; 来指明这台虚拟主机使用哪个域名。</p>
</li>
</ol>
<p>没有必要为每个虚拟主机指定所有的配置语句，因为虚拟主机中没有指定的配置语句将使用服务器主配置文档中的配置。</p>
<ol>
<li><h3 id="启动 Web 服务">启动 Web 服务</h3>
<p>启动 Web 服务的命令为：/etc/init.d/httpdstart</p>
</li>
<li><h3 id="停止 Web 服务">停止 Web 服务</h3>
<p>启动 Web 服务的命令为：/etc/init.d/httpdstop</p>
</li>
<li><h3 id="重新启动 Web 服务">重新启动 Web 服务</h3>
<p>启动 Web 服务的命令为：/etc/init.d/httpdrestart</p>
</li>
<li><h3 id="自动启动 Web 服务">自动启动 Web 服务</h3>
<p>如果需要让 wleb 服务随系统启动而自动加载，可以执行“ntsysv”命令启动服务配置程序，找到“httpd”服务，在其前面加上星号(*)，然后选择“确定’’即可</p>
</li>
</ol>
<p>必须注意是 web 服务使用 TCP 协议的 80 端口，如果 Linux 服务器开启了防火墙功能，就需关闭防火墙功能或设置允许 TCP 协议的 80 端口通过。可以使用以下命令开放 TCP 协议的 80 端口。</p>
<p>Iptables-IINPUT-ptcp –dport80-jACCEPT</p>
<p>以上 Web 服务的测试采用的网页都是使用 HTML 语言编写的简单网页。众所周知，HTML 语言的功能是比较贫乏的，难以完成诸如访问数据库等一类的操作，而实际的情况则是经常需要先对数据库进行操作(比如文件检索系统)，然后把访问的结果动态地显示在网页上。诸如此类的需求只用 HTML 是无法做到的。</p>
<p>因此，要运行动态网页，还需在服务器上配置 CGI 运行环境，或者配置 PHP 运行环境，或者配置 JSP 运行环境。</p>
<p>CGI 是在 Web 服务器运行的一个可执行程序，由网页的一个超链接激活进行调用，并对该程序的返回结果进行处理，显示在客户端的 Web 浏览器上。用 CGI 程序可以实现处理网页的表单处理、数据库查询、发送电子邮件等工作。CGI 使网页变得不再是静态的，而是交互式的。</p>
<p>PHP 是超级文本预处理语言 PHP Hypertext Preprocessor 的嵌套缩写。PHP 是一种 HTML 内嵌式的语言，PHP 与微软公司的 ASP 颇有几分相似，都是一种在服务器端执行的“嵌入 HTML 文档的脚本语言”，语言的风格类似于 C 语言，现在被很多的网站编程人员广泛运用。PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。它可以比 CGI 或者 Perl 更快速地执行动态网页。</p>
<p>JSP(Java Server Pages)是由 Sun Microsystems 公司倡导、许多公司一起参与建立的一种基于 Java 技术的动态网页技术标准。在传统的网页 HTML 文件 (<em>.htm、</em>.html) 中嵌入了 Java 代码的一个脚本，由脚本完成查询数据库、重新定向网页和发送电子邮件等动态操作。所有程序操作都在服务器端执行，网络上传送给客户端的仅是得到的 HTML 结果。在这一点上，JSP 与 ASP 和 PHP 等脚本语言一样。但 JSP 与其他脚本不同的是，ASP 和 PHP 等传统脚本语言由服务器直接解释这个脚本，而 JSP 则由 JSP 容器 (如 Tomcat) 首先将其转化为 Servlet，然后再调用 Javac 编译器将 Servlet 编译为二进制的 Class 文件，服务器最终运行的是 Class 文件，所以运行效率要比传统解析性的脚本语言高。</p>
<p>Apache 只是一个 Web 服务器，不能运行 JSP 程序。如果要运行 JSP 程序，还需要安装 Tomcat 服务器软件，通过整合 Tomcat 与 Apache 来运行 JSP 程序。Tomcat 是由 Apache-Jakarta 子项目支持的开放源代码服务器软件，它得到 Sun 公司的全力支持，而且 Tomcat 的运行效率非常高，所以它得到了广泛的应用。</p>
<p>&nbsp;</p>
<div class=ujian-hook></div>
</div>
<footer class=article-footer>
<div class=bdsharebuttonbox>
<a href=# class=bds_tsina data-cmd=tsina title=分享到新浪微博></a>
<a href=# class=bds_qzone data-cmd=qzone title=分享到QQ空间></a>
<a href=# class=bds_tqq data-cmd=tqq title=分享到腾讯微博></a>
<a href=# class=bds_weixin data-cmd=weixin title=分享到微信></a>
<a href=# class=bds_tieba data-cmd=tieba title=分享到百度贴吧></a>
<a href=# class=bds_renren data-cmd=renren title=分享到人人网></a>
<a href=# class=bds_tqf data-cmd=tqf title=分享到腾讯朋友></a>
<a href=# class=bds_douban data-cmd=douban title=分享到豆瓣网></a>
<a href=# class=bds_tsohu data-cmd=tsohu title=分享到搜狐微博></a>
<a href=# class=bds_t163 data-cmd=t163 title=分享到网易微博></a>
<a href=# class=bds_taobao data-cmd=taobao title=分享到我的淘宝></a>
<a href=# class=bds_fx data-cmd=fx title=分享到飞信></a>
<a href=# class=bds_hi data-cmd=hi title=分享到百度空间></a>
<a href=# class=bds_more data-cmd=more></a>
</div>
<ul class=article-tag-list><li class=article-tag-list-item><a class=article-tag-list-link href=../tag/php>PHP</a></li><li class=article-tag-list-item><a class=article-tag-list-link href=../tag/计算机>计算机</a></li><li class=article-tag-list-item><a class=article-tag-list-link href=../tag/计算机网络>计算机网络</a></li></ul>
</footer>
</div>
<nav id=article-nav>
<a href="/love-is-not-blind/" id=article-nav-newer class=article-nav-link-wrap>
<strong class=article-nav-caption>Newer</strong>
<div class=article-nav-title>
失恋33天 小说 原著 剧本
</div>
</a>
<a href="/router-performance/" id=article-nav-older class=article-nav-link-wrap>
<strong class=article-nav-caption>Older</strong>
<div class=article-nav-title>路由器性能指标详解</div>
</a>
</nav>
</article>
<section id=comments>
<div class=ds-thread data-thread-key="build-apache-web-server/" data-title="建立与配置 Apache WEB 服务器" data-url="http://cweili.gitcafe.com/build-apache-web-server/"></div>
</section>
</section>
<aside id=sidebar class=col-sm-3>
<div class="widget-wrap hidden-xs">
<h3 class=widget-title>分类</h3>
<div class=widget>
<ul class=category-list><li class=category-list-item><a class=category-list-link href=../category/学习笔记>学习笔记</a><span class=category-list-count>40</span></li><li class=category-list-item><a class=category-list-link href=../category/小生活>小生活</a><span class=category-list-count>27</span></li><li class=category-list-item><a class=category-list-link href=../category/杂物>杂物</a><span class=category-list-count>9</span></li></ul>
</div>
</div>
<div class=widget-wrap>
<h3 class=widget-title>最新评论</h3>
<div class=widget>
<div class=ds-recent-comments data-num-items=10 data-show-avatars=1 data-show-time=1 data-show-title=0 data-show-admin=1 data-excerpt-length=20>
<div class=text-center><i class="fa fa-refresh fa-spin"></i></div>
</div>
</div>
</div>
<div class=widget-wrap>
<h3 class=widget-title>最新文章</h3>
<div class=widget>
<ul>
<li>
<a href="/xixishidi/">河塘飞鸟西溪湿地</a>
</li>
<li>
<a href="/xizihu/">水光潋滟西子湖畔</a>
</li>
<li>
<a href="/xitang/">柳絮纷飞烟雨西塘</a>
</li>
<li>
<a href="/wuzhen/">灯火阑珊水映乌镇</a>
</li>
<li>
<a href="/stu3-zoo/">Stu3 Zoo</a>
</li>
<li>
<a href="/jshint-options/">JSHint配置参数详解</a>
</li>
<li>
<a href="/css3-jquery-rocket-to-top/">CSS3动画与jQuery实现返回顶部小火箭</a>
</li>
<li>
<a href="/rebuild-blog-gitcafe/">再一次重建我的博客</a>
</li>
<li>
<a href="/java-poi-excel/">Java使用POI创建Excel图表</a>
</li>
<li>
<a href="/hibernate-connect-sqlite-paging-bug-repair/">Hibernate 连接 SQLite (hibernate-sqlite) 分页bug的修复</a>
</li>
<li>
<a href="/web-page-color-chart/">更全的网页颜色表</a>
</li>
<li>
<a href="/quarrying-rocky-4/">20120407春游采石矶(四)</a>
</li>
<li>
<a href="/quarrying-rocky-3/">20120407春游采石矶(三)</a>
</li>
<li>
<a href="/quarrying-rocky-2/">20120407春游采石矶(二)</a>
</li>
<li>
<a href="/quarrying-rocky/">20120407春游采石矶(一)</a>
</li>
<li>
<a href="/ahpu-spring/">安徽工程大学的春天</a>
</li>
<li>
<a href="/helps-students-assembled-computer/">帮同学组装帅气小机箱电脑一台</a>
</li>
<li>
<a href="/nanjing-trip-4/">20120310南京二日行(四)</a>
</li>
<li>
<a href="/nanjing-trip-3/">20120310南京二日行(三)</a>
</li>
<li>
<a href="/nanjing-trip-2/">20120310南京二日行(二)</a>
</li>
</ul>
</div>
</div>
<div class="widget-wrap hidden-xs">
<h3 class=widget-title>手机阅读</h3>
<div class=widget>
<div class=qrcode style="background-image:url(http://qr.liantu.com/api.php?bg=eeeeee&fg=000000&el=l&w=192&m=0&text=http://cweili.gitcafe.com/build-apache-web-server/)"></div>
</div>
</div>
<div class="widget-wrap hidden-xs">
<h3 class=widget-title>标签云</h3>
<div class="widget tagcloud">
<a href=../tag/acm style=font-size:10px>ACM</a><a href=../tag/c++ style=font-size:15.71px>C++</a><a href=../tag/css style=font-size:10px>CSS</a><a href=../tag/fedora style=font-size:15.71px>Fedora</a><a href=../tag/gnome style=font-size:11.43px>Gnome</a><a href=../tag/hibernate style=font-size:10px>Hibernate</a><a href=../tag/jshint style=font-size:10px>JSHint</a><a href=../tag/java style=font-size:11.43px>Java</a><a href=../tag/javascript style=font-size:12.86px>JavaScript</a><a href=../tag/linux style=font-size:17.14px>Linux</a><a href=../tag/pdo style=font-size:10px>PDO</a><a href=../tag/php style=font-size:12.86px>PHP</a><a href=../tag/poi style=font-size:10px>POI</a><a href=../tag/photoshop style=font-size:14.29px>Photoshop</a><a href=../tag/sae style=font-size:10px>SAE</a><a href=../tag/sql style=font-size:14.29px>SQL</a><a href=../tag/sqlite style=font-size:11.43px>SQLite</a><a href=../tag/stl style=font-size:11.43px>STL</a><a href=../tag/stu3 style=font-size:10px>Stu3</a><a href=../tag/twitter style=font-size:10px>Twitter</a><a href=../tag/virtualbox style=font-size:10px>VirtualBox</a><a href=../tag/jquery style=font-size:10px>jQuery</a><a href=../tag/三国杀 style=font-size:15.71px>三国杀</a><a href=../tag/乌镇 style=font-size:10px>乌镇</a><a href=../tag/互联网 style=font-size:10px>互联网</a><a href=../tag/动漫 style=font-size:11.43px>动漫</a><a href=../tag/动画 style=font-size:10px>动画</a><a href=../tag/南京 style=font-size:14.29px>南京</a><a href=../tag/博客 style=font-size:14.29px>博客</a><a href=../tag/实验 style=font-size:15.71px>实验</a><a href=../tag/容器 style=font-size:11.43px>容器</a><a href=../tag/小说 style=font-size:10px>小说</a><a href=../tag/微博 style=font-size:11.43px>微博</a><a href=../tag/心情 style=font-size:14.29px>心情</a><a href=../tag/摄影 style=font-size:17.14px>摄影</a><a href=../tag/操作系统 style=font-size:14.29px>操作系统</a><a href=../tag/数据库 style=font-size:18.57px>数据库</a><a href=../tag/旅行 style=font-size:20px>旅行</a><a href=../tag/日记 style=font-size:17.14px>日记</a><a href=../tag/杭州 style=font-size:11.43px>杭州</a>
</div>
</div>
<div class="widget-wrap hidden-xs">
<h3 class=widget-title>归档</h3>
<div class=widget>
<ul class=archive-list><li class=archive-list-item><a class=archive-list-link href=../archive/2014/09>September 2014</a><span class=archive-list-count>4</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2014/08>August 2014</a><span class=archive-list-count>4</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2012/09>September 2012</a><span class=archive-list-count>1</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2012/05>May 2012</a><span class=archive-list-count>2</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2012/04>April 2012</a><span class=archive-list-count>5</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2012/03>March 2012</a><span class=archive-list-count>5</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2011/12>December 2011</a><span class=archive-list-count>4</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2011/11>November 2011</a><span class=archive-list-count>18</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2011/10>October 2011</a><span class=archive-list-count>32</span></li><li class=archive-list-item><a class=archive-list-link href=../archive/2011/05>May 2011</a><span class=archive-list-count>2</span></li></ul>
</div>
</div>
<div class="widget-wrap hidden-xs">
<h3 class=widget-title>友情链接</h3>
<div class=widget>
<ul>
<li>
<a href=http://cweili.gitcafe.com target=_blank>主页</a>
</li>
</ul>
</div>
</div>
</aside>
</div>
<footer id=footer>
<div class=footer-wrap>
<div class=outer>
<div class=inner>
<div id=social-network>
<a class=link href=https://github.com/Cweili target=_blank><i class="fa fa-fw fa-github"></i></a>
<a class=link href=http://weibo.com/cweili target=_blank><i class="fa fa-fw fa-weibo"></i></a>
</div>
<div id=footer-info>
&copy; 2014 <a href=http://cweili.gitcafe.com target=_blank>Cweili</a><br>
Powered by <a href="http://hexo.io/" target=_blank>Hexo</a>.
Theme by <a href=http://cweili.gitcafe.com target=_blank>Cweili</a>.
</div>
</div>
</div>
</div>
</footer>
</div>
</div>
<div id=rocket-to-top>
<div class=onhover></div>
<div class=anim></div>
</div>
<link rel=stylesheet href=//libs.baidu.com/fontawesome/4.0.3/css/font-awesome.min.css css type=text/css>
<script src=//libs.baidu.com/jquery/1.11.1/jquery.min.js type=text/javascript></script><link rel=stylesheet href=//cdn.staticfile.org/fancybox/2.1.5/jquery.fancybox.min.css type=text/css>
<script src=//cdn.staticfile.org/fancybox/2.1.5/jquery.fancybox.min.js type=text/javascript></script><script src=../js/script.js type=text/javascript></script><script type=text/javascript>var duoshuoQuery={short_name:"cweiligitcafe"};</script><script src=//static.duoshuo.com/embed.js type=text/javascript></script><script type=text/javascript>var ujian_config={num:10,showType:3};</script><script src="http://v1.ujian.cc/code/ujian.js?uid=1539214&_=.js" type=text/javascript></script><script type=text/javascript>window._bd_share_config={common:{bdSnsKey:{},bdPopTitle:"分享到",bdMini:2,bdPopupOffsetLeft:28,bdPopupOffsetTop:108,bdMiniList:["sqq","mshare","bdysc","kaixin001","ibaidu","baidu","ff","qy","meilishuo","mogujie","diandian","ty","youdao","sdo"],bdPic:"",bdStyle:1,bdSize:"24"},share:{},image:{viewList:["tsina","qzone","tqq","weixin","tieba","renren","tqf","douban","tsohu","t163","taobao","fx","hi"],viewText:" ",viewSize:"24"},selectShare:{bdContainerClass:"article",bdSelectMiniList:["tsina","qzone","tqq","weixin","tieba","renren","tqf","douban","tsohu","t163","taobao","fx","hi"]}},document.write('<script type="text/javascript" src="http://bdimg.share.baidu.com/static/api/js/share.js?cdnversion='+~(-new Date/36e5)+'"><\/script>');</script><div id=stat-wrap>
<script src="http://s19.cnzz.com/stat.php?id=1252976445&web_id=1252976445" type=text/javascript></script></div></body></html>